import java.util.Arrays;

public class sortUtil {
    /**
     * 说是比较器  其实用的jdk的sort
     * @param arr
     */
    public static void comparator(int[]arr){
        Arrays.sort(arr);
    }

    /**
     * 生成 随机大小的  随机数组
     * @param maxSize
     * @param maxValue
     * @return
     */
    public static int[] generateRandomArray(int maxSize, int maxValue){
        int [] arr = new int[(int) ((maxSize+1)*Math.random())];
//        System.out.println("sortUtil.generateRandom maxSize --》" + arr.length);
        for (int i = 0; i < arr.length; i++) {
            arr[i]= (int) ((maxValue+1)*Math.random());
            //下面这种随机的更彻底
//            arr[i] = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
        }
        return arr;
    }

    /**
     * 不知道为什么要copy
     * @param arr
     * @return
     */
    public  static int[] copyArray(int[] arr){
        if (arr == null) {
            return null;
        }
        int[] result = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            result[i]=arr[i];
        }
        return result;
    }

    /**
     * 比 两个数组
     * @param arr1
     * @param arr2
     * @return
     */
    public static boolean isEqual(int[] arr1,int[] arr2){
        if ((arr1 == null && arr2 != null) || (arr1 != null && arr2 == null)) {
            return false;
        }
        if (arr1 == null && arr2 == null) {
            return true;
        }
        if (arr1.length != arr2.length) {
            return false;
        }
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i]!=arr2[i]){
                return false;
            }
        }
        return true;
    }

    /**
     * 打印
     * @param arr
     */
    public static void printArray(int[] arr) {
        if (arr == null) {
            return;
        }
        for (int i = 0; i < arr.length; i++) {
//            打印出来没什么看头
            System.out.print("\t arr-> " + arr [i]);
        }
        System.out.println();
    }

    public static void swap(int[] arr, int i, int minIdx) {
        int tmp =arr[i];
        arr[i]=arr[minIdx];
        arr[minIdx]=tmp;
    }

    /**
     *  0异或n = n
     *  n异或n = 0
     * @param arr
     * @param i
     * @param minIdx
     */
    public static void swap2(int[] arr, int i, int minIdx) {
        arr[i]= arr[i] ^ arr[minIdx];
        arr[minIdx]= arr[i] ^ arr[minIdx];
        arr[i]= arr[i] ^ arr[minIdx];
    }
}
